﻿using System;
using System.Collections.Generic;
using System.Text;
using System.Data;

namespace CMS_GYM
{
    class clsPhanQuyenChucNangDAO
    {
        #region Attribute
        /// <summary>
        /// Kết nối SQL Server
        /// </summary>
        private CSQLServer sqlServer = new CSQLServer();
        #endregion

        /// <summary>
        /// Lấy danh sách chức năng
        /// </summary>
        public DataTable LayBang(int QuyenHanId)
        {
            string sql = "sp_GetBangPhanQuyenChucNang";
            string[] ParameterColection = new string[1];
            Object[] valueofParameter = new Object[1];
            ParameterColection[0] = "@QuyenHanId";
            valueofParameter[0] = QuyenHanId;
            DataTable table = sqlServer.readData(sql, ParameterColection, valueofParameter);
            return table;
        }

        /// <summary>
        /// author: minhnb
        /// date: 29-09-2013
        /// Lấy các chức năng đã được phân quyền theo mã quyền hạn
        /// </summary>
        /// <param name="MaQuyenHan"></param>
        /// <returns></returns>
        public List<clsPhanQuyenChucNangDTO> LayDanhSach(int MaQuyenHan)
        {
            try
            {
                string sql = "spGetBangPhanQuyenChucNang";
                string[] ParameterColection = new string[1];
                Object[] valueofParameter = new Object[1];
                ParameterColection[0] = "@MaQuyenHan";
                valueofParameter[0] = MaQuyenHan;
                DataTable table = sqlServer.readData(sql, ParameterColection, valueofParameter);
                return ChuyenDoi(table, MaQuyenHan);
            }
            catch (Exception)
            {
                return new List<clsPhanQuyenChucNangDTO>();
            }
        }

        /// <summary>
        /// chuyển từ một dòng sang đối tượng phân quyền chức năng
        /// </summary>
        private List<clsPhanQuyenChucNangDTO> ChuyenDoi(DataTable table, int MaQuyenHan)
        {
            try
            {
                List<clsPhanQuyenChucNangDTO> DanhSach = new List<clsPhanQuyenChucNangDTO>();
                for (int i = 0; i < table.Rows.Count; i++)
                {
                    clsPhanQuyenChucNangDTO PQ_CN = new clsPhanQuyenChucNangDTO();
                    PQ_CN.MaQuyenHan = MaQuyenHan;
                    PQ_CN.ChucNang.MaChucNang = int.Parse(table.Rows[i]["MaChucNang"].ToString());
                    PQ_CN.ChucNang.TenChucNang = table.Rows[i]["TenChucNang"] == null ? string.Empty : table.Rows[i]["TenChucNang"].ToString();
                    PQ_CN.ChucNang.TenMenu = table.Rows[i]["TenMenu"] == null ? string.Empty : table.Rows[i]["TenMenu"].ToString();
                    PQ_CN.ChucNang.Them = table.Rows[i]["Them"] == null || string.IsNullOrEmpty(table.Rows[i]["Them"].ToString()) ? false : bool.Parse(table.Rows[i]["Them"].ToString());
                    PQ_CN.ChucNang.Sua = table.Rows[i]["Sua"] == null || string.IsNullOrEmpty(table.Rows[i]["Sua"].ToString()) ? false : bool.Parse(table.Rows[i]["Sua"].ToString());
                    PQ_CN.ChucNang.Xoa = table.Rows[i]["Xoa"] == null || string.IsNullOrEmpty(table.Rows[i]["Xoa"].ToString()) ? false : bool.Parse(table.Rows[i]["Xoa"].ToString());

                    DanhSach.Add(PQ_CN);
                }
                return DanhSach;
            }
            catch (Exception)
            {
                return new List<clsPhanQuyenChucNangDTO>();
            }
        }

        /// <summary>
        /// Thêm một phân quyền chức năng
        /// </summary>
        /// <param name="PhanQuyenChucNang">
        /// MaQuyenHan  nvarchar(10)
        /// MaPhieuXuat  nvarchar(10)
        /// SoTien  int
        /// </param>
        public int Them(clsPhanQuyenChucNangDTO PhanQuyenChucNang)
        {
            int i = -1;
            string sql = "sp_InsertPhanQuyenChucNang";
            string[] ParameterColection = new string[2];
            Object[] valueofParameter = new Object[2];
            ParameterColection[0] = "@MaQuyenHan";
            valueofParameter[0] = PhanQuyenChucNang.MaQuyenHan;
            ParameterColection[1] = "@MaChucNang";
            valueofParameter[1] = PhanQuyenChucNang.ChucNang.MaChucNang;
            i = sqlServer.writeData(sql, ParameterColection, valueofParameter);
            return i;
        }

        public int Sua(int MaQuyenHan, string xml)
        {
            int i = -1;
            string sql = "sp_UpdatePhanQuyenChucNang";
            string[] ParameterColection = new string[2];
            Object[] valueofParameter = new Object[2];
            ParameterColection[0] = "@MaQuyenHan";
            valueofParameter[0] = MaQuyenHan;
            ParameterColection[1] = "@XmlData";
            valueofParameter[1] = xml;
            i = sqlServer.writeData(sql, ParameterColection, valueofParameter);
            return i;
        }

        /// <summary>
        /// Xóa thông tin phân quyền chức năng
        /// </summary>
        /// <param name="PhanQuyenChucNang">
        /// MaQuyenHan  nvarchar(10)
        /// MaPhieuXuat  nvarchar(10)
        /// </param>
        public int Xoa(clsPhanQuyenChucNangDTO PhanQuyenChucNang)
        {
            int i = -1;
            string sql = "sp_DeletePhanQuyenChucNang";
            string[] ParameterColection = new string[2];
            Object[] valueofParameter = new Object[2];
            ParameterColection[0] = "@MaQuyenHan";
            valueofParameter[0] = PhanQuyenChucNang.MaQuyenHan;
            ParameterColection[1] = "@MaChucNang";
            valueofParameter[1] = PhanQuyenChucNang.ChucNang.MaChucNang;
            i = sqlServer.writeData(sql, ParameterColection, valueofParameter);
            return i;
        }

        /// <summary>
        /// Xóa tất cả các quyền hạn theo mã quyền hạn
        /// </summary>
        /// <param name="PhanQuyenChucNang">
        /// MaQuyenHan  nvarchar(10)
        /// MaPhieuXuat  nvarchar(10)
        /// </param>
        public int XoaTatCa(int MaQuyenHan)
        {
            int i = -1;
            string sql = "sp_DeleteAllPhanQuyenChucNang";
            string[] ParameterColection = new string[1];
            Object[] valueofParameter = new Object[1];
            ParameterColection[0] = "@MaQuyenHan";
            valueofParameter[0] = MaQuyenHan;
            i = sqlServer.writeData(sql, ParameterColection, valueofParameter);
            return i;
        }
    }
}
